<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>

</body>
<script>
          // let p = new Promise((resolve,reject)=>{
          // 触发catch，方法1-通过reject
          // reject(new Error('产生错误'))
          // 触发catch，方法2 通过抛出一个错误
          // throw new Error("产生错误")
          // 触发catch，方法3 -resolve一个失败的promise
          // resolve(new Promise((resolve2,reject2)=>{ reject2(new Error('产生错误')) }))
          // resolve(Promise.reject(new Error('产生错误')))
          // })
          // p.then(data=>{

          // }).catch(error=>{
          // console.log(error,'error');
          // })

          //应用promise的错误处理
          //页面当中方法
          async function handleLogin(){
          try {
            let token = await myLogin({mobile:'11',password:'4555'})
            console.log('登录成功,token',token);
          } catch (error) {
          console.log(error)

          }
          }
          //接口当中方法
          function myLogin(data){
          return request({
            url: '/sys/login',
            method: 'POST',
            data
          })
          }
          //axios的封装
          function request(){
          return new Promise((resolve,reject)=>{
            //通过ajax发请求获取数据
            //服务器返回成功数据
            setTimeout(() => {
          // let response={success:true,data:'abcd'}
          //服务器返回失败数据
          let response = {success: false ,data: null}
          //关键代码
          resolve(interceptorsResponse(response))
            }, 0);
          })
          }
          //axios的响应拦截器
          function interceptorsResponse(response){
          let {success,data} = response
          if (!success) {
            console.log('提示失败')
            // return
            // 触发catch，方法2 通过抛出一个错误
            throw new Error("产生错误")
            // 触发catch，方法3 resolve一个失败的promise
            return Promise.reject(new Error('产生错误'))
          }else{
            return data
          }
          }
          handleLogin() //执行页面方法
</script>
</html>
